const { PDFDocument, rgb, degrees } = require('pdf-lib');
const fontkit = require('@pdf-lib/fontkit');
const { url } = require('../../upload/index')
const fs = require('fs')

/* 
@合并pdf fileList为传入的pdf文件列表
*/
const addPdfLib = (pdfList) => {
    return new Promise(async (resolve, reject) => {
        // 读取模板pdf
        const templateBytes = await fs.promises.readFile(url + '/test100.pdf')
        // 加载模板pdf
        const pdfDoc = await PDFDocument.load(templateBytes);
        // // pdf准备加载字体
        pdfDoc.registerFontkit(fontkit);
        // // 加载字体文件 fontPath字体文件ttf的存放路径
        /* 去网上下载一个字体文件 */
        const fontBytes = await fs.promises.readFile(url + '/' + 'font.ttf');
        // 读取字体文件
        const font = await pdfDoc.embedFont(fontBytes);
        // 获取pdf页面列表
        const pages = pdfDoc.getPages()
        // 在对应页面插入信息  水印同理 多页就采取循环去做
        const firstPage = pages[0]
        /* degrees 旋转角度  opacity 透明度 */

        // 一页面 生成多个 用数组来决定
        for(let i=0;i<4;i++){
            firstPage.drawText('wangs', {
                x: 270,
                y: 150+i*200,
                size: 16,
                rotate: degrees(30),
                opacity: 0.3,
                font,
            })
        }
        // 插入图片 （签章均为图片）
        // const imgData = fs.readFileSync(url)
        // const jpgImage = await pdfDoc.embedPng(imgData);
        // const jpgDims = jpgImage.scale(0.25);
        // pages[0].drawImage(jpgImage, {
        //     x: 400,
        //     y: 300,
        //     width: jpgDims.width,
        //     height: jpgDims.height,
        // });

        // 保存pdf
        const modifiedPdfBytes = await pdfDoc.save();
        // 拼接输出路径
        const outPath = url + '/' + 'test300.pdf'
        // 写在指定位置
        await fs.promises.writeFile(outPath, modifiedPdfBytes);
        resolve(true)

    })
}

module.exports = {
    addPdfLib
}